Vue v-for Components
একই ধরণের একাধিক উপাদান তৈরি করতে v-for দিয়ে উপাদানগুলি পুনরায় ব্যবহার করা যেতে পারে।
v-for দিয়ে একটি উপাদান থেকে উপাদান তৈরি করার সময়, অ্যারে থেকে প্রাপ্ত মানগুলির উপর ভিত্তি করে গতিশীলভাবে প্রপ বরাদ্দ করতে সক্ষম হওয়া খুবই কার্যকর।
ভি-ফর দিয়ে উপাদান উপাদান তৈরি করা
আসুন খাদ্য আইটেমের নাম সম্বলিত একটি অ্যারের উপর ভিত্তি করে v-for দিয়ে উপাদান উপাদান তৈরি করি।
উদাহরণ
আপনার নিজস্ব Vue সার্ভার পান
// App.vue:
<template>
<h1>Food</h1>
<p>Components created with v-for based on an array.</p>
<div id="wrapper">
<food-item
v-for="x in foods"
v-bind:food-name="x"/>
</div>
</template>
<script>
export default {
data() {
return {
foods: ['Apples','Pizza','Rice','Fish','Cake']
};
}
}
</script>
// FoodItem.vue:
<template>
<div>
<h2>{{ foodName }}</h2>
</div>
</template>
<script>
export default {
props: ['foodName']
}
</script>
v-bind একটি সংক্ষিপ্ত রূপ
আমরা প্রপসকে গতিশীলভাবে আবদ্ধ করতে v-bind ব্যবহার করি, এবং যেহেতু আমরা এখন আগের চেয়ে বেশি v-bind ব্যবহার করব, আমরা এই টিউটোরিয়ালের বাকি অংশের জন্য v-bind : শর্টহ্যান্ড : ব্যবহার করব।
'কী' বৈশিষ্ট্য
v-for দিয়ে উপাদান তৈরি হওয়ার পর ক্রম পরিবর্তন করলে Vue উপাদান আপডেট করার সময় ত্রুটি হতে পারে। Vue কার্যকারিতা উন্নত করতে উপাদানগুলিকে পুনরায় ব্যবহার করে, তাই যদি আমরা একটি আইটেম সরিয়ে ফেলি তবে বিদ্যমান উপাদানগুলি পুনরায় ব্যবহার করা হবে এবং উপাদানের বৈশিষ্ট্যগুলি সঠিক হবে না।
উপাদানগুলিকে ভুলভাবে পুনঃব্যবহারের কারণ হল উপাদানগুলির একটি অনন্য শনাক্তকারী নেই এবং সেই কারণেই আমরা মূল বৈশিষ্ট্যটি ব্যবহার করি: Vue উপাদানগুলির মধ্যে পার্থক্য করতে৷
সম্পূর্ণ উদাহরণ
আসুন ভি-ফর ব্যবহার করে একটি ওয়েব পেজ তৈরি করি যা খাবারের নাম, বর্ণনা, পছন্দের খাবারের ছবি এবং পছন্দের অবস্থা পরিবর্তন করার বোতাম প্রদর্শন করে।
// App.vue:
<template>
<h1>Food</h1>
<p>Food items are generated with v-for from the 'foods' array.</p>
<div id="wrapper">
<food-item
v-for="x in foods"
:food-name="x.name"
:food-desc="x.desc"
:is-favorite="x.favorite"/>
</div>
</template>
<script>
export default {
data() {
return {
foods: [
{ name: 'Apples',
desc: 'Apples are a type of fruit that grow on trees.',
favorite: true },
{ name: 'Pizza',
desc: 'Pizza has a bread base with tomato sauce, cheese, and toppings on top.',
favorite: false },
{ name: 'Rice',
desc: 'Rice is a type of grain that people like to eat.',
favorite: false },
{ name: 'Fish',
desc: 'Fish is an animal that lives in water.',
favorite: true },
{ name: 'Cake',
desc: 'Cake is something sweet that tastes good.',
favorite: false }
]
};
}
}
</script>
<style>
#wrapper {
display: flex;
flex-wrap: wrap;
}
#wrapper > div {
border: dashed black 1px;
flex-basis: 120px;
margin: 10px;
padding: 10px;
background-color: lightgreen;
}
</style>
// FoodItem.vue:
<template>
<div>
<h2>
{{ foodName }}
<img src="/img_quality.svg" v-show="foodIsFavorite">
</h2>
<p>{{ foodDesc }}</p>
<button v-on:click="toggleFavorite">Favorite</button>
</div>
</template>
<script>
export default {
props: ['foodName','foodDesc','isFavorite'],
data() {
return {
foodIsFavorite: this.isFavorite
}
},
methods: {
toggleFavorite() {
this.foodIsFavorite = !this.foodIsFavorite;
}
}
}
</script>
<style>
img {
height: 1.5em;
float: right;
}
</style>
গুরুত্বপূর্ণ নোট:
একটি বোতাম যোগ করার সময় যা অ্যারের দ্বিতীয় উপাদানটিকে সরিয়ে দেয়, কী বৈশিষ্ট্য ছাড়াই, প্রিয় চিত্রটি 'মাছ' উপাদান থেকে 'কেক' উপাদানে পরিবর্তিত হয়, যা সঠিক নয়।
কী বৈশিষ্ট্য সহ সমাধান
v-এর সাথে উপাদানগুলি তৈরি করার সময় আপনাকে প্রতিটি উপাদানকে স্বতন্ত্রভাবে সনাক্ত করতে মূল বৈশিষ্ট্য যোগ করতে হবে। কী অ্যাট্রিবিউট ব্যবহার করার সময়, এই সমস্যাটি দেখা দেয় না।
// App.vue এ শুধুমাত্র একটি লাইন যোগ করুন: <খাদ্য-আইটেম v-for="x in foods" :key="x.name" :food-name="x.name" :food-desc="x.desc" :is-favorite="x.favorite" />
সতর্কতা:
অ্যারে সূচীকে কী অ্যাট্রিবিউট মান হিসাবে ব্যবহার করবেন না কারণ অ্যারের উপাদানগুলি যুক্ত এবং সরানো হলে এটি পরিবর্তিত হবে। প্রতিটি আইটেমের জন্য একটি অনন্য মান ধরে রাখতে একটি নতুন ডেটা অ্যাট্রিবিউট তৈরি করা যেতে পারে, তবে যেহেতু খাদ্য আইটেমগুলির ইতিমধ্যেই অনন্য নাম রয়েছে, তাই এটি ব্যবহার করা যেতে পারে।
ভিউ টিউটোরিয়াল
ব্যায়াম দিয়ে নিজেকে পরীক্ষা করুন